%% This is file `supertabular.sty', %% generated with the docstrip utility. %% The original source files were: %% supertabular.dtx (with options: `package') %% Copyright (C) 1988-97 by Theo Jurriens, Johanes Braams (90-96). %% All rights reserved. %% IMPORTANT NOTICE: %% You are not allowed to change this file. You may however copy this file %% to a file with a different name and then change the copy. %% You are NOT ALLOWED to distribute this file alone. You are NOT ALLOWED %% to take money for the distribution or use of this file (or a changed %% version) except for a nominal charge for copying etc. %% You are allowed to distribute this file under the condition that it is %% distributed together with all files mentioned below. %% If you receive only some of these files from someone, complain! %% Error Reports in case of UNCHANGED versions to either of %% J.L. Braams %% TeXniek %% Kooienswater 62 %% 2715 AJ Zoetermeer %% The Netherlands %% Internet: %% Theo Jurriens %% Rijks Universiteit Groningen %% P.O Box 800, %% 9700 AV Groningen %% The Netherlands %% Internet: %% File `supertabular.dtx'. %% Copyright (C) 1988 by Theo Jurriens %% P.O Box 800, 9700 AV Groningen %% Copyright (C) 1990-1997 by Johannes Braams %% Kooienswater 62 %% 2715 AJ Zoetermeer NL %% all rights reserved. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{supertabular} [1997/03/06 v4.0d the supertabular environment] \newcount\c@tracingst \DeclareOption{errorshow}{\c@tracingst\z@} \DeclareOption{pageshow}{\c@tracingst\tw@} \DeclareOption{debugshow}{\c@tracingst5\relax} \ProcessOptions \newif\if@topcaption \@topcaptiontrue \def\topcaption{\@topcaptiontrue\tablecaption} \def\bottomcaption{\@topcaptionfalse\tablecaption} \long\def\tablecaption{% \refstepcounter{table}\@dblarg{\@xtablecaption}} \long\def\@xtablecaption[#1]#2{% \long\gdef\@process@tablecaption{\ST@caption{table}[#1]{#2}}} \global\let\@process@tablecaption\relax \newif\ifST@star \newdimen\ST@wd \long\def\ST@caption#1[#2]#3{\par% \addcontentsline{\csname ext@#1\endcsname}{#1}% {\protect\numberline{% \csname the#1\endcsname}{\ignorespaces #2}} \begingroup \@parboxrestore \normalsize \if@topcaption \vskip -10\p@ \fi \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par \if@topcaption \vskip 10\p@ \fi \endgroup} \newcommand\tablehead[1]{% \gdef\@tablehead{% \noalign{% \global\let\@savcr=\\ \global\let\\=\cr}% #1% \noalign{\global\let\\=\@savcr}}} \tablehead{} \newcommand\tablefirsthead[1]{\gdef\@table@first@head{#1}} \newcommand\tabletail[1]{% \gdef\@tabletail{% \noalign{% \global\let\@savcr=\\ \global\let\\=\cr}% #1% \noalign{\global\let\\=\@savcr}}} \tabletail{} \newcommand\tablelasttail[1]{\gdef\@table@last@tail{#1}} \newcommand\sttraceon{\c@tracingst5\relax} \newcommand\sttraceoff{\c@tracingst\z@} \newcommand\ST@trace[2]{% \ifnum\c@tracingst>#1\relax \GenericWarning {(supertabular)\@spaces\@spaces} {Package supertabular: #2}% \fi \newdimen\ST@pageleft \newcommand*\shrinkheight[1]{% \noalign{\global\ST@pageleft=#1\relax}} \newdimen\ST@headht \newdimen\ST@tailht \newdimen\ST@pagesofar \newdimen\ST@pboxht \newdimen\ST@lineht \newdimen\ST@toadd \newdimen\ST@dimen \newbox\ST@pbox \def\ST@tabularcr{% {\ifnum0=`}\fi \@ifstar{\ST@xtabularcr}{\ST@xtabularcr}} \def\ST@xtabularcr{% \@ifnextchar[%] {\ST@argtabularcr}% {\ifnum0=`{\fi}\cr\ST@cr}} \def\ST@argtabularcr[#1]{% \ifnum0=`{\fi}% \ifdim #1>\z@ \unskip\ST@xargarraycr{#1} \else \ST@yargarraycr{#1}% \fi} \def\ST@xargarraycr#1{% \@tempdima #1\advance\@tempdima \dp \@arstrutbox \vrule \@height\z@ \@depth\@tempdima \@width\z@ \cr \noalign{\global\ST@toadd=#1}\ST@cr} \def\ST@yargarraycr#1{% \cr\noalign{\vskip #1\global\ST@toadd=#1}\ST@cr} \def\ST@startpbox#1{% \setbox\ST@pbox\vtop\bgroup\hsize#1\@arrayparboxrestore} \def\ST@astartpbox#1{% \bgroup\hsize#1% \setbox\ST@pbox\vtop\bgroup\hsize#1\@arrayparboxrestore} \def\ST@endpbox{% \@finalstrut\@arstrutbox\par\egroup \ST@dimen=\ht\ST@pbox \advance\ST@dimen by \dp\ST@pbox \ifnum\ST@pboxht<\ST@dimen \global\ST@pboxht=\ST@dimen \fi \ST@dimen=\z@ \box\ST@pbox\hfil} \def\ST@aendpbox{% \@finalstrut\@arstrutbox\par\egroup \ST@dimen=\ht\ST@pbox \advance\ST@dimen by \dp\ST@pbox \ifnum\ST@pboxht<\ST@dimen \global\ST@pboxht=\ST@dimen \fi \ST@dimen=\z@ \unvbox\ST@pbox\egroup\hfil} \def\estimate@lineht{% \ST@lineht=\arraystretch \baslineskp \global\advance\ST@lineht by 1\p@ \ST@trace\tw@{Average line height:\the\ST@lineht}% \def\@calfirstpageht{% \ST@trace\tw@{Calculating height of tabular on first page}% \global\ST@pagesofar\pagetotal \global\ST@pageleft\@colroom \ST@trace\tw@{Height of text = \the\pagetotal; \MessageBreak Heigth of page = \the\ST@pageleft}% \if@twocolumn \ST@trace\tw@{two column mode}% \if@firstcolumn \ST@trace\tw@{First column}% \ifnum\ST@pagesofar > \ST@pageleft \global\ST@pageleft=2\ST@pageleft \ifnum\ST@pagesofar > \ST@pageleft \newpage\@calnextpageht \ST@trace\tw@{starting new page}% \else \ST@trace\tw@{Second column}% \global\advance\ST@pageleft -\ST@pagesofar \global\advance\ST@pageleft -\@colroom \fi \fi \fi \else \ST@trace\tw@{one column mode}% \ifnum\ST@pagesofar > \ST@pageleft \ST@trace\tw@{starting new page}% \newpage\@calnextpageht \else \global\advance\ST@pageleft by -\ST@pagesofar \global\ST@pagesofar\z@ \fi \fi \ST@trace\tw@{Available height: \the\ST@pageleft}% \ifx\@@tablehead\@empty \ST@headht=\z@ \else \setbox\@tempboxa=\vbox{\@arrayparboxrestore \ST@restore \expandafter\tabular\expandafter{\ST@tableformat}% \@@tablehead\endtabular}% \ST@headht=\ht\@tempboxa\advance\ST@headht\dp\@tempboxa \fi \ST@trace\tw@{Height of head: \the\ST@headht}% \ifx\@tabletail\@empty \ST@tailht=\z@ \else \setbox\@tempboxa=\vbox{\@arrayparboxrestore \ST@restore \expandafter\tabular\expandafter{\ST@tableformat} \@tabletail\endtabular} \ST@tailht=\ht\@tempboxa\advance\ST@tailht\dp\@tempboxa \fi \advance\ST@tailht by \ST@lineht \ST@trace\tw@{Height of tail: \the\ST@tailht}% \ST@trace\tw@{Maximum height of tabular: \the\ST@pageleft}% \@tempdima\ST@headht \advance\@tempdima\ST@lineht \advance\@tempdima\ST@tailht \ST@trace\tw@{Minimum height of tabular: \the\@tempdima}% \ifnum\@tempdima>\ST@pageleft \ST@trace\tw@{starting new page}% \newpage\@calnextpageht \fi \def\@calnextpageht{% \ST@trace\tw@{Calculating height of tabular on next page}% \global\ST@pageleft\@colroom \global\ST@pagesofar=\z@ \ST@trace\tw@{Maximum height of tabular: \the\ST@pageleft}% \def\x@supertabular{% \let\org@tabular\tabular \let\tabular\inner@tabular \expandafter\let \csname org@tabular*\expandafter\endcsname \csname tabular*\endcsname \expandafter\let\csname tabular*\expandafter\endcsname \csname inner@tabular*\endcsname \if@topcaption \@process@tablecaption \fi \global\let\@oldcr=\\ \def\baslineskp{\baselineskip}% \ifx\undefined\@classix \let\@@tabularcr\@tabularcr \let\@tabularcr\ST@tabularcr \let\org@startpbox=\@startpbox \let\org@endpbox=\@endpbox \let\@@startpbox=\ST@startpbox \let\@@endpbox=\ST@endpbox \else \let\@@tabularcr\@arraycr \let\@arraycr\ST@tabularcr \let\org@startpbox=\@startpbox \let\org@endpbox=\@endpbox \let\@startpbox=\ST@astartpbox \let\@endpbox=\ST@aendpbox \fi \ifx\@table@first@head\undefined \let\@@tablehead=\@tablehead \else \let\@@tablehead=\@table@first@head \fi \estimate@lineht \@calfirstpageht \def\supertabular{% \@ifnextchar[{\@supertabular}%] {\@supertabular[]}} \def\@supertabular[#1]#2{% \def\ST@tableformat{#2}% \ST@trace\tw@{Starting a new supertabular}% \global\ST@starfalse \x@supertabular \expandafter\org@tabular\expandafter{\ST@tableformat}% \@@tablehead} \@namedef{supertabular*}#1{% \@ifnextchar[{\@nameuse{@supertabular*}{#1}}% {\@nameuse{@supertabular*}{#1}[]}%] \@namedef{@supertabular*}#1[#2]#3{% \ST@trace\tw@{Starting a new supertabular*}% \def\ST@tableformat{#3}% \ST@wd=#1\relax \global\ST@startrue \x@supertabular \expandafter\csname tabular*\expandafter\endcsname \expandafter{\expandafter\ST@wd\expandafter}% \expandafter{\ST@tableformat}% \@@tablehead}% \def\endsupertabular{% \ifx\@table@last@tail\undefined \@tabletail \else \@table@last@tail \fi \csname endtabular\ifST@star*\fi\endcsname \ST@restore \if@topcaption \else \@process@tablecaption \@topcaptiontrue \fi \global\let\\\@oldcr \let\@table@first@head\undefined \let\@table@last@tail\undefined \global\let\@process@tablecaption\relax \ST@trace\tw@{Ended a supertabular\ifST@star*\fi}% \expandafter\let\csname endsupertabular*\endcsname\endsupertabular \def\ST@restore{% \ifx\undefined\@classix \let\@tabularcr\@@tabularcr \else \let\@arraycr\@@tabularcr \fi \let\@startpbox\org@startpbox \let\@endpbox\org@endpbox \def\inner@tabular{% \ST@restore \let\\\@oldcr \org@tabular} \@namedef{inner@tabular*}{% \ST@restore \let\\\@oldcr \csname org@tabular*\endcsname} \def\ST@cr{% \noalign{% \ifnum\ST@pboxht<\ST@lineht \global\advance\ST@pageleft -\ST@lineht \else \ST@trace\thr@@{Added par box with height \the\ST@pboxht}% \global\advance\ST@pageleft -\ST@pboxht \global\advance\ST@pageleft -0.1\ST@pboxht \global\ST@pboxht\z@ \fi \global\advance\ST@pageleft -\ST@toadd \global\ST@toadd=\z@ \ST@trace\thr@@{Space left for tabular: \the\ST@pageleft}% \ifnum\ST@pageleft<\z@ \ST@skippage \else \ifnum\ST@pageleft<\ST@tailht \ST@newpage \else \noalign{\global\let\ST@next\@empty}% \fi \fi \ST@next} \def\ST@skippage{% \noalign{% \ST@trace\tw@{Tabular too high, moving to next page}% \global\advance\ST@pageleft\pagetotal \global\ST@pagesofar\z@ \newpage }} \def\ST@newpage{% \noalign{\ST@trace\tw@{Starting new page, writing tail}}% \@tabletail \ifST@star \csname endtabular*\endcsname \else \endtabular \fi \newpage\@calnextpageht \let\ST@next\@tablehead \ST@trace\tw@{writing head}% \ifST@star \expandafter\csname tabular*\expandafter\endcsname \expandafter{\expandafter\ST@wd\expandafter}% \expandafter{\ST@tableformat}% \else \expandafter\org@tabular\expandafter{\ST@tableformat}% \fi} \endinput %% End of file `supertabular.sty'.